package com.sojson.project.entity.po;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;

import com.sojson.base.impl.BaseDto;
import com.sojson.enums.core.EPayStatus;
import com.sojson.enums.core.ERefundsStatus;
import com.sojson.util.DateUtil;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

/**
 * 子订单表Bean
 * 
 * @author liu
 * @date 2021-04-07
 */
@ApiModel("子订单表Bean")
public class OrderChild extends BaseDto {

    /**
     * 此文件由工具自动生成，手动添加内容请放至末尾
     */

    private static final long serialVersionUID = 1617782371106L;

    @ApiModelProperty("主订单ID")
    private String orderId;
    @ApiModelProperty("子订单号")
    private String orderChildSn;
    @ApiModelProperty("支付单号(微信生成的支付订单)")
    private String paySn;
    @ApiModelProperty("微信支付单号")
    private String payNoWx;
    @ApiModelProperty("支付宝支付单号")
    private String payNoZfb;
    @ApiModelProperty("退款单号")
    private String refundSn;
    @ApiModelProperty("原价")
    private BigDecimal originalPrice;
    @ApiModelProperty("优惠金额")
    private BigDecimal couponTotal;
    @ApiModelProperty("订单金额")
    private BigDecimal orderTotal;
    @ApiModelProperty("退款金额")
    private BigDecimal refundTotal;
    @ApiModelProperty("分成金额(0-0.99)")
    private BigDecimal percentageTotal;
    @ApiModelProperty("使用优惠券编号列表(逗号拼接)")
    private String couponNos;
    @ApiModelProperty("订单类型 1新签 2续租")
    private Integer orderType;
    @ApiModelProperty("支付方式 1微信支付 2支付宝支付")
    private Integer payType;
    @ApiModelProperty("订单状态 1待付款 2已付款待签合同 3已完成 4已取消")
    private Integer status;
    @ApiModelProperty("是否已付款(1:已付款,2:未付款)")
    private Integer isPay;
    @ApiModelProperty("是否已退款(1:已退款,2:未退款)")
    private Integer isRefunds;
    @ApiModelProperty("订单保证金")
    private BigDecimal orderDeposit;
    @ApiModelProperty("逾期扣除")
    private BigDecimal overdueDeduct;
    @ApiModelProperty("逾期管理备注")
    private String overdueMark;
    @ApiModelProperty("订单备注")
    private String mark;
    @ApiModelProperty("电子合同链接")
    private String contractUrl;
    @ApiModelProperty("电子合同的flowid")
    private String contractFlowId;
    @ApiModelProperty("最早逾期时间")
    private Date overdueDate;
    @ApiModelProperty("租赁天数")
    private Integer rentDays;
    @ApiModelProperty("租赁开始时间")
    private Date startTime;
    @ApiModelProperty("租赁结束时间")
    private Date endTime;
    @ApiModelProperty("创建时间")
    private Date createdAt;
    @ApiModelProperty("更新时间")
    private Date updatedAt;
    @ApiModelProperty("支付信息")
    private String payMsg;
    @ApiModelProperty("退款信息")
    private String refundsMsg;
    /** 子订单表集合 */
    private ArrayList<Integer> ids;
    /** 子订单表集合 */
    private ArrayList<OrderChild> orderChilds;

    /**
     * 以上由工具自动生成，以下为手动添加
     */

       /**
        * Empty constructor
        */
    public OrderChild() {

    }

    /**
     * 此文件由工具自动生成，手动添加内容请放至末尾
     */

    /**
     * 获取 主订单ID
     */
    public String getOrderId() {
        return orderId;
    }

    /**
     * 设置 主订单ID
     */
    public void setOrderId(String orderId) {
        this.orderId = orderId;
    }

    /**
     * 获取 子订单号
     */
    public String getOrderChildSn() {
        return orderChildSn;
    }

    /**
     * 设置 子订单号
     */
    public void setOrderChildSn(String orderChildSn) {
        this.orderChildSn = orderChildSn;
    }

    /**
     * 获取 支付单号(微信生成的支付订单)
     */
    public String getPaySn() {
        return paySn;
    }

    /**
     * 设置 支付单号(微信生成的支付订单)
     */
    public void setPaySn(String paySn) {
        this.paySn = paySn;
    }

    /**
     * 获取微信支付单号
     * 
     * @return
     */
    public String getPayNoWx() {
        return payNoWx;
    }

    /**
     * 设置微信支付单号
     * 
     * @param payNoWx
     */
    public void setPayNoWx(String payNoWx) {
        this.payNoWx = payNoWx;
    }

    /**
     * 获取支付宝支付单号
     * 
     * @return
     */
    public String getPayNoZfb() {
        return payNoZfb;
    }

    /**
     * 设置支付宝支付单号
     * 
     * @param payNoZfb
     */
    public void setPayNoZfb(String payNoZfb) {
        this.payNoZfb = payNoZfb;
    }

    /**
     * 获取 退款单号
     */
    public String getRefundSn() {
        return refundSn;
    }

    /**
     * 设置 退款单号
     */
    public void setRefundSn(String refundSn) {
        this.refundSn = refundSn;
    }

    /**
     * 获取原价
     * 
     * @return
     */
    public BigDecimal getOriginalPrice() {
        return originalPrice;
    }

    /**
     * 设置原价
     * 
     * @param originalPrice
     */
    public void setOriginalPrice(BigDecimal originalPrice) {
        this.originalPrice = originalPrice;
    }

    /**
     * 获取优惠金额
     * 
     * @return
     */
    public BigDecimal getCouponTotal() {
        return couponTotal;
    }

    /**
     * 设置优惠金额
     * 
     * @param couponTotal
     */
    public void setCouponTotal(BigDecimal couponTotal) {
        this.couponTotal = couponTotal;
    }

    /**
     * 获取 订单金额
     */
    public BigDecimal getOrderTotal() {
        return orderTotal;
    }

    /**
     * 设置 订单金额
     */
    public void setOrderTotal(BigDecimal orderTotal) {
        this.orderTotal = orderTotal;
    }

    /**
     * 获取 退款金额
     */
    public BigDecimal getRefundTotal() {
        return refundTotal;
    }

    /**
     * 设置 退款金额
     */
    public void setRefundTotal(BigDecimal refundTotal) {
        this.refundTotal = refundTotal;
    }

    /**
     * 获取 分成金额(0-0.99)
     */
    public BigDecimal getPercentageTotal() {
        return percentageTotal;
    }

    /**
     * 设置 分成金额(0-0.99)
     */
    public void setPercentageTotal(BigDecimal percentageTotal) {
        this.percentageTotal = percentageTotal;
    }

    /**
     * 获取使用优惠券编号列表(逗号拼接)
     */
    public String getCouponNos() {
        return couponNos;
    }

    /**
     * 设置使用优惠券编号列表(逗号拼接)
     */
    public void setCouponNos(String couponNos) {
        this.couponNos = couponNos;
    }

    /**
     * 获取 订单类型 1新签 2续租
     */
    public Integer getOrderType() {
        return orderType;
    }

    /**
     * 设置 订单类型 1新签 2续租
     */
    public void setOrderType(Integer orderType) {
        this.orderType = orderType;
    }

    /**
     * 获取 支付方式 1微信支付 2支付宝支付
     */
    public Integer getPayType() {
        return payType;
    }

    /**
     * 设置 支付方式 1微信支付 2支付宝支付
     */
    public void setPayType(Integer payType) {
        this.payType = payType;
    }

    /**
     * 获取 订单状态 1待付款 2已付款待签合同 3已完成 4已取消
     */
    public Integer getStatus() {
        return status;
    }

    /**
     * 设置 订单状态 1待付款 2已付款待签合同 3已完成 4已取消
     */
    public void setStatus(Integer status) {
        this.status = status;
    }

    /**
     * 获取 是否已付款(1:已付款,2:未付款)
     */
    public Integer getIsPay() {
        return isPay;
    }

    /**
     * 设置 是否已付款(1:已付款,2:未付款)
     */
    public void setIsPay(Integer isPay) {
        this.isPay = isPay;
    }

    /**
     * 获取 是否已退款(1:已退款,2:未退款)
     */
    public Integer getIsRefunds() {
        return isRefunds;
    }

    /**
     * 设置 是否已退款(1:已退款,2:未退款)
     */
    public void setIsRefunds(Integer isRefunds) {
        this.isRefunds = isRefunds;
    }

    /**
     * 获取支付信息
     * 
     * @return
     */
    public String getPayMsg() {
        return payMsg;
    }

    /**
     * 设置支付信息
     * 
     * @param payMsg
     */
    public void setPayMsg(String payMsg) {
        this.payMsg = payMsg;
    }

    /**
     * 获取退款信息
     * 
     * @return
     */
    public String getRefundsMsg() {
        return refundsMsg;
    }

    /**
     * 设置退款信息
     * 
     * @param refundsMsg
     */
    public void setRefundsMsg(String refundsMsg) {
        this.refundsMsg = refundsMsg;
    }

    /**
     * 获取 订单保证金
     */
    public BigDecimal getOrderDeposit() {
        return orderDeposit;
    }

    /**
     * 设置 订单保证金
     */
    public void setOrderDeposit(BigDecimal orderDeposit) {
        this.orderDeposit = orderDeposit;
    }

    /**
     * 获取 逾期扣除
     */
    public BigDecimal getOverdueDeduct() {
        return overdueDeduct;
    }

    /**
     * 设置 逾期扣除
     */
    public void setOverdueDeduct(BigDecimal overdueDeduct) {
        this.overdueDeduct = overdueDeduct;
    }

    /**
     * 获取 逾期管理备注
     */
    public String getOverdueMark() {
        return overdueMark;
    }

    /**
     * 设置 逾期管理备注
     */
    public void setOverdueMark(String overdueMark) {
        this.overdueMark = overdueMark;
    }

    /**
     * 获取 订单备注
     */
    public String getMark() {
        return mark;
    }

    /**
     * 设置 订单备注
     */
    public void setMark(String mark) {
        this.mark = mark;
    }

    /**
     * 获取 电子合同链接
     */
    public String getContractUrl() {
        return contractUrl;
    }

    /**
     * 设置 电子合同链接
     */
    public void setContractUrl(String contractUrl) {
        this.contractUrl = contractUrl;
    }

    /**
     * 获取 电子合同的flowid
     */
    public String getContractFlowId() {
        return contractFlowId;
    }

    /**
     * 设置 电子合同的flowid
     */
    public void setContractFlowId(String contractFlowId) {
        this.contractFlowId = contractFlowId;
    }

    /**
     * 获取 最早逾期时间
     */
    public Date getOverdueDate() {
        return overdueDate;
    }

    /**
     * 设置 最早逾期时间
     */
    public void setOverdueDate(Date overdueDate) {
        this.overdueDate = overdueDate;
    }

    /**
     * 获取 租赁天数
     */
    public Integer getRentDays() {
        return rentDays;
    }

    /**
     * 设置 租赁天数
     */
    public void setRentDays(Integer rentDays) {
        this.rentDays = rentDays;
    }

    /**
     * 获取 租赁开始时间
     */
    public Date getStartTime() {
        return startTime;
    }

    /**
     * 设置 租赁开始时间
     */
    public void setStartTime(Date startTime) {
        this.startTime = startTime;
    }

    /**
     * 获取 租赁结束时间
     */
    public Date getEndTime() {
        return endTime;
    }

    /**
     * 设置 租赁结束时间
     */
    public void setEndTime(Date endTime) {
        this.endTime = endTime;
    }

    /**
     * 获取 创建时间
     */
    public Date getCreatedAt() {
        return createdAt;
    }

    /**
     * 设置 创建时间
     */
    public void setCreatedAt(Date createdAt) {
        this.createdAt = createdAt;
    }

    /**
     * 获取 更新时间
     */
    public Date getUpdatedAt() {
        return updatedAt;
    }

    /**
     * 设置 更新时间
     */
    public void setUpdatedAt(Date updatedAt) {
        this.updatedAt = updatedAt;
    }

    /**
     * 获取 子订单表集合
     */
    public ArrayList<Integer> getIds() {
        return ids;
    }

    /**
     * 设置 子订单表集合
     */
    public void setIds(ArrayList<Integer> ids) {
        this.ids = ids;
    }

    /**
     * 获取 子订单表集合
     */
    public ArrayList<OrderChild> getOrderChilds() {
        return orderChilds;
    }

    /**
     * 设置 子订单表集合
     */
    public void setOrderChilds(ArrayList<OrderChild> orderChilds) {
        this.orderChilds = orderChilds;
    }

    /**
     * 以上由工具自动生成，以下为手动添加
     */

    /**
     * 插入初始化
     */
    public void insertInit() {
        setIsPay(EPayStatus.NO.getCode());
        setIsRefunds(ERefundsStatus.NO.getCode());
        Date now = DateUtil.nowDate();
        setCreatedAt(now);
        setUpdatedAt(now);
    }

    /**
     * 更新初始化
     */
    public void updateInit() {
        Date now = DateUtil.nowDate();
        setUpdatedAt(now);
    }

}